﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Data.SqlClient;
using System.Configuration;

namespace Quaack
{
    public partial class Inloggen : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(Request.Params["logout"]))
            {
                FormsAuthentication.SignOut();
                Response.Redirect("./");
            }
        }

        protected void btnInloggen_Click(object sender, EventArgs e)
        {
            // Roep de Method aan om inlognaam en wachtwoord te vergelijken met de inhoud in de Quaack database
            if (ValidateUser(txtInlognaam.Text, txtWachtwoord.Text))
            {
                FormsAuthentication.RedirectFromLoginPage(txtInlognaam.Text, true);

                // Zodra inloggen succesvol is verlopen, doorsturen naar de pagina van eigen berichten
                Response.Redirect("~/EigenPagina.aspx");
            }
            else
                lblMsg.Text = "Inloggen met deze inlognaam en wachtwoord combinatie is niet toegestaan";
        }

        // Vergelijk inlognaam en wachtwoord met de inhoud van de Quaack database
        bool ValidateUser(string username, string password)
        {
            // Geef via de ConfigurationManager aan dat we gaan verbinden met de Quaack database (zie web.config)
            string connStr = ConfigurationManager.ConnectionStrings["Quaack"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                // zoek de inlognaam en wachtwoord combinatie op in de database en of het account geblokkeerd is
                string sql = "select username, permblocked from profile where username = @username and password = @password and permblocked = '0'";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("@username", username);
                cmd.Parameters.AddWithValue("@password", password);
                // Geef het eerstgevonden resultaat terug en negeer de rest
                return cmd.ExecuteScalar() is string;
                // conn.Close() is niet nodig omdat de using block zelf een .Dispose() doet.
            }
        }

        protected void lbtnSendpw_Click(object sender, EventArgs e)
        {
            // Ga naar de pagina sendpw.asxp
            Response.Redirect("~/sendpw.aspx");
        }
    }
}